package mymyoux.io.mserveur.mcontactClasses.events
{
	import flash.events.Event;
	
	import mymyoux.events.IStaticListenable;
	import mymyoux.io.mserveur.MRoom;
	import mymyoux.io.mserveur.mcontactClasses.People;
	/**
	 * PeopleEvent est envoyé par une MRoom ou People ou MAdvBinSocket lors d'évènements qui se produisent et liés à un client.
	 * @author Mymyoux
	 * @version 1.0
	 */
	public class PeopleEvent extends Event  implements IStaticListenable
	{
		/*
		**
		 * Evenement envoyé lors de la conexion au salon.
		 *
		public static const CONNECT:String="connect";

		**
		 * Evenement envoyé lorsqu'une erreur se produit.
		 *
		public static const ERROR:String="error";
		*/
		/**
		 * Evenement envoyé lors de la déconnexion totale d'un client.
		 */
		public static const PEOPLE_OFFLINE:String="people_offline";
			/**
		 * Evenement envoyé lors de la conexion à un salon d'un client ou du joueur.
		 */
		public static const PEOPLE_IN:String="people_in";
		/**
		 * Evenement envoyé lors de la déconexion du salon ou fermeture de celui-ci.
		 */
		public static const PEOPLE_OUT:String="people_out";
		/**
		 * Evenement envoyé lors de la réception d'une donnée d'un joueur.
		 *
		 */
		public static const PEOPLE_DATA:String="people_data";

		/**
		 * @private
		 */
		protected var _value:*
		/**
		 * @private
		 */
		protected var _room:MRoom;
		/**
		 * @private
		 */
		protected var _people:People;
		/**
		 * Crée un évènement de type PeopleEvent
		 * @param type Type de l'évènement.
		 * @param room Salon lié à l'évènement.
		 * @param value Valeur liée à l'évènement.
		 * @param idx Idx du client lié à l'évènement.
		 * @param bubbles Determines whether the Event object participates in the bubbling stage of the event flow. The default value is false.
		 * @param cancelable Determines whether the Event object can be canceled. The default values is false.
		 */
		public function PeopleEvent(type:String,room:MRoom, value:*,people:People, bubbles:Boolean=false, cancelable:Boolean=false)
		{
			_value=value;
			_room=room;
			_people=people;
			super(type, bubbles, cancelable);
		}
		 /**
		 * @inheritDoc
		 */
		 public override function clone():Event
		 {
		 	return new PeopleEvent(type,room,value,people,bubbles,cancelable);
		 }
		/**
		 * Valeur liée à l'évènement.
		 */
		public function get value():*
		{
			return _value;
		}
		/**
		 * Nom du salon lié à l'évènement.
		 */
		public function get name():String
		{
			return _room.name;
		}
		/**
		 * Salon lié à l'évènement.
		 */
		public function get room():MRoom
		{
			return _room;
		}
		/**
		 * Client.
		 */
		public function get people():People
		{
			return _people;
		}
		/**
		 * @copy mymyoux.core.IObject#toString()
		 */
		public override function toString():String
		{
			return "[PeopleEvent type=\""+type+"\" salon=\""+name+"\" idx=\""+people.idx+"\" value=\""+value+"\"]";
		}
	}
}